perm filename FFT2.F4[900,BGB] blob
sn#129607 filedate 1974-11-12 generic text, type T, neo UTF8
00100 C FORT, ONE DIMENSIONAL FINITE COMPLEX FOURIER TRANSFORM
00200 C
00300 SUBROUTINE FORT(A,M,S,IFS,IFERR)
04900 C
05000 DIMENSION A(1),S(1),K(14)
05500 IF(M)2,2,3
05600 3 IF(M-13) 5,5,2
05700 2 IFERR=1
05800 1 RETURN
05900 5 IFERR=0
06000 N=2**M
06100 IF(IABS(IFS)-1) 200,200,10
06200 C WE ARE DOING TRANSFORM ONLY. SEE IF PRECOMPUTED
06300 C S TABLE IS SUFFICIENTLY LARGE.
06400 10 IF(N-NP)20,20,12
06500 12 IFERR=1
06600 GO TO 200
06700 20 CALL BITREV(A,M)
09700
09710 CALL FFT(IFS)
17100 160 GO TO 1
17200 C RETURN
17300 C MAKE TABEL OF S(J)=SIN(2*PI*J/NP),J=1,2,...,NT-1,NT=NP/4
17400 200 NP=N
17500 MP=M
17600 NT=N/4
17700 MT=M-2
17701 N2=2*N
17703 NPL=2**MT
17710 FN=N
17720 FN=1.0/FN
17730 CALL FFTINT(A,S,M,NT,N,N2,FN,NPL)
17800 IF(MT) 260,260,205
17900 205 THETA=0.7853981634
18000 C THETA= PI/2**(L+1) FOR L=1
18100 210 JSTEP=NT
18200 C JSTEP= 2** (MT-L+1) FOR L=1
18300 JDTF=NT/2
18400 C JDTF= 2**(MT-L) FOR L=1
18500 S(JDTF)=SIN(THETA)
18600 IF(MT-2)260,220,220
18700 220 DO 250 L=2,MT
18800 THETA=THETA/2.0
18900 JSTEP2=JSTEP
19000 JSTEP=JDTF
19100 JDTF=JDTF/2
19200 S(JDTF)=SIN(THETA)
19300 JC1=NT-JDTF
19400 S(JC1)=COS(THETA)
19500 JLAST=NT-JSTEP2
19600 IF(JLAST-JSTEP)250,230,230
19700 230 DO 240 J=JSTEP,JLAST,JSTEP
19800 JC=NT-J
19900 JD=J+JDTF
20000 240 S(JD)=S(J)*S(JC1)+S(JDTF)*S(JC)
20100 250 CONTINUE
20200 260 IF(IFS)20,1,20
20300 RETURN
20400 END